
//  AppDelegate.swift
//  weibo-01
//
//  Created by 源 何 on 16/9/22.
//  Copyright © 2016年 何源. All rights reserved.
//

import UIKit

@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {

    var window: UIWindow?

    func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
        
        //加载通知
        registerNotification()
        //实例化window对象
        window = UIWindow(frame: UIScreen.main.bounds)
        window?.backgroundColor = UIColor.white
        
        //设置根视图控制器
        window?.rootViewController = HYUserAccountViewModel.sharedAccountViewModel.userLogin ? HYWelcomeViewController() : HYTabBarController()
        //HYTabBarController
        //window可视化
        window?.makeKeyAndVisible()
        
        return true
    }
    
    //希望将根视图控制器的切换全放在 AppDelegate 可以使用通知来完成 这种一对多的逻辑操作
    //实际开发中不建议大量使用通知
    //1.注册某通知 添加观察者
    //2.实现通知监听方法
    //3.在需要的地方发出通知
    //4.移除通知
    
    //注册通知
    private func registerNotification() {
        //通知名称在swift 发生了切换 不能传递一个字符串对象
        NotificationCenter.default.addObserver(self, selector: #selector(setRootViewController), name: NSNotification.Name(KchangeRootViewController), object: nil)
    }
    
    //实现通知的监听方法
    @objc private func setRootViewController(n: NSNotification) {
        if n.object == nil {
            //设置根视图控制器
            //tabbarVC
            window?.rootViewController = HYTabBarController()
        } else {
            //欢迎界面
            window?.rootViewController = HYWelcomeViewController()
        }
    }

    //移除通知
    //此处写移除通知没有意义,但是代码规范
    deinit {
        NotificationCenter.default.removeObserver(self)
    }
}

